/*
 * This file is part of Annuaire.
 *
 * Annuaire is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Annuaire is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Annuaire.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.miage.annuaire.data;

import java.util.ArrayList;

/**
 * @author Jeff
 *
 */
public interface DataAccess
{

	/**
	 * @return liste des codes des strucure de premier niveau de la hierachie de
	 *         l'Žtablissement
	 */
	public ArrayList<String> getStructures();

	/**
	 * @param level
	 *            : niveau des structures recherchŽes
	 * @return liste des codes des structure de niveau level dans
	 *         l'Žtablissement ; liste vide si rien
	 */
	public ArrayList<String> getStructures(int level);

	/**
	 * @param struct
	 *            code de la strucure dont on cherche la structure parent
	 * @return le code de la structure parent ; struct si ˆ la racine
	 */
	public String getStructureFather(String struct);

	/**
	 * @param struct
	 *            : code de la strucure dont on cherche les enfants directs
	 * @return la liste des code structure enfants directs
	 */
	public ArrayList<String> getStructureChilds(String struct);

	/**
	 * @param struct
	 * @return nom court
	 */
	public String getShortName(String struct);

	/**
	 * @param struct
	 * @return nom long
	 */
	public String getCompleteName(String struct);

	/**
	 * @param struct
	 * @return le code du responsable de la structure
	 */
	public String getLeader(String struct);

	/**
	 * @param struct
	 * @return le titre du responsable de la structure : "directeur" ou
	 *         "chef de service" ou "vice prŽsident en charge des SI", etc.
	 */
	public String getLeaderTitle(String struct);

	/**
	 * @param struct
	 * @return le code de le personne "contact" de la structure (secrŽtaire,
	 *         responsable admin, etc.)
	 */
	public String getContact(String struct);

	/**
	 * @param struct
	 * @return la liste des "directeurs" adjoints (code des)
	 */
	public ArrayList<String> getAsistantLeaders(String struct);

	/**
	 * @param struct
	 * @return la liste des titres des "directeurs" adjoints (ex : directeur
	 *         adjoint en charge des services)
	 */
	public ArrayList<String> getAsistantLeadersTitle(String struct);

	/**
	 * @param struct
	 * @return la liste des membres de la structure (code des)
	 */
	public ArrayList<String> getMembers(String struct);

	/**
	 * @param person
	 * @return nom
	 */
	public String getName(String person);

	/**
	 * @param person
	 * @return tel
	 */
	public String getPhone(String person);

	/**
	 * @param person
	 * @return bureau
	 */
	public String getOffice(String person);

	/**
	 *  @param person
	 * @return fonction
	 *
	 */
	public String getFunction(String person);
}
